---
title: Configuration
summary: Environment API settings, run-time connection resolution, Web.config, and per-variant environment variance for SAIF.Services.WCF.UC4.Host.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-22
---

# Configuration

The Environment API is the primary configuration source for this host: every setting the service reads at run time is reached through `IEnvironmentService.GetConfigSetting`, resolved per request from the caller's `OperationContext`, never from a process-wide static or the build.

## Environment API settings

| Key | Retrieval method | Consuming class | Secure | Purpose |
| --- | --- | --- | --- | --- |
| `uc4.rules` | `_envSvc.GetConfigSetting("uc4.rules")`, result deserialized as `UC4JobRules` via `JsonConvert.DeserializeObject` | `UC4Service.IsJobAllowed` (`UC4Service.cs:55-56`) | No | The allow/deny rule document that gates every job execution. Appears in **no** file in this repository — it is an environment-service setting only. |
| `uc4coreapi.url` (composed from `EnvironmentConstants.UC4CoreApiSettingGroup` + `.` + `EnvironmentConstants.ServiceUrlKey`) | `env.GetConfigSetting<string>($"{EnvironmentConstants.UC4CoreApiSettingGroup}.{EnvironmentConstants.ServiceUrlKey}")` | `UC4Client` constructor (`Uc4Client.cs:24`) | No | Address of the downstream UC4 service the host forwards jobs to |
| `uc4coreapi.schedulejobroute` (composed from `UC4CoreApiSettingGroup` + `.` + `ScheduleJobRouteKey`) | `env.GetConfigSetting<string>($"{EnvironmentConstants.UC4CoreApiSettingGroup}.{EnvironmentConstants.ScheduleJobRouteKey}")` | `UC4Client` constructor (`Uc4Client.cs:25`) | No | Retrieved into `ScheduleJobEndpoint` and **never used** — the value is assigned to a property no code reads. Tech-debt finding. |
| `ApplicationHost` | `appSettings` in `Web.config` (`value="entdev01"`) | Read by the framework's environment-service host resolution*; no host source reads it directly | No | Selects the environment-service host used to answer the keys above* |

No call to `GetSecureConfigSetting` exists anywhere in this host's source.

Key-name composition evidence: `src/WCF/SAIF.Services.WCF.UC4.Host/EnvironmentConstants.cs` — `UC4CoreApiSettingGroup = "uc4coreapi"`, `ServiceUrlKey = "url"`, `ScheduleJobRouteKey = "schedulejobroute"`, interpolated in `Uc4Client.cs:24-25`.

Other host-level constants that behave as configuration: `APP_NAME = "wcf_uc4"` (`UC4Service.cs:26`), passed as `ClientInfo.ApplicationId` on every outbound call (`Uc4Client.cs:31`) and matching the pipeline `AppName` (`pipelines/build-vars.UC4.yml`).

## Per-request resolution mechanism

Configuration is resolved **per request**, from the operation's own context:

```csharp
// src/WCF/SAIF.Services.WCF.UC4.Host/UC4Service.cs line 31
public UC4Service() : this(new WcfEnvironmentService(OperationContext.Current.RequestContext))
```

`WcfEnvironmentService` is the WCF implementation of `IEnvironmentService` supplied by the SAIF framework packages* and resolves the environment tier from the current `OperationContext.RequestContext`. The environment tier that answers every `GetConfigSetting` call in this host is therefore a property of the caller's request URI, not of the build configuration or of the machine — the same deployed binary answers differently for callers arriving on different environment addresses.

## Run-time connection resolution chain

**There is no database connection in this host.** No `<connectionStrings>` element exists in `Web.config`; no `DbConnectionManager.GetOracleConnectionString(env, EnvironmentConfigKeys.OracleDatabase, "<pool code>")` call exists in any host source file; no `EnvironmentConfigKeys` reference exists. This is a proven absence, not a missing finding — see [Dependencies](dependencies.md#database-connections). No `data-model.md` page is generated for this host: the analysis proved (by exhaustive search) that it performs no database interaction of any kind. Where a connection is resolved elsewhere in this repository, it is resolved per request through the environment service exactly as the settings above are; no connection string, no credential, and no static connection table appears anywhere in this document set.

## Web.config settings

| Setting | Value | Source |
| --- | --- | --- |
| `<system.serviceModel><services>` | 1 entry, `SAIF.Services.WCF.UC4.Host.Services.UC4Service`, no `<endpoint>` children | `Web.config` |
| `basicHttpBinding` (default, unnamed) `maxBufferPoolSize` | `2147483647` | `Web.config` |
| `basicHttpBinding` (default, unnamed) `maxReceivedMessageSize` | `2147483647` | `Web.config` |
| `readerQuotas maxDepth` | `32` | `Web.config` |
| `readerQuotas maxStringContentLength` | `5242880` | `Web.config` |
| `readerQuotas maxArrayLength` | `2147483647` | `Web.config` |
| `readerQuotas maxBytesPerRead` | `4096` | `Web.config` |
| `readerQuotas maxNameTableCharCount` | `2147483647` | `Web.config` |
| Transport/message security | Not declared — no `security` element on the binding, no `<serviceCredentials>`, no `<serviceAuthorization>`; the default `basicHttpBinding` security mode is `None`* | `Web.config` |
| `serviceMetadata httpGetEnabled` | `true` | `Web.config` |
| `serviceDebug includeExceptionDetailInFaults` | `true` | `Web.config` |
| `serviceHostingEnvironment aspNetCompatibilityEnabled` | `true` | `Web.config` |
| `serviceHostingEnvironment multipleSiteBindingsEnabled` | `true` | `Web.config` |
| `system.web/compilation debug` | `true` | `Web.config` |
| `system.web/customErrors mode` | `Off` | `Web.config` |
| `system.webServer/httpErrors errorMode` | `Detailed` | `Web.config` |
| `appSettings/ApplicationHost` | `entdev01` | `Web.config` |
| Assembly binding redirect | `Newtonsoft.Json` `0.0.0.0-13.0.0.0` → `13.0.0.0` | `Web.config` |

**`ServiceHostFactory` default statement:** because `<services>` declares no `<endpoint>`, no endpoint address, binding, or contract is written down anywhere in this host. The stock `System.ServiceModel.Activation.ServiceHostFactory` creates the endpoint by protocol-mapping default, which for the HTTP scheme is `basicHttpBinding`;* the unnamed `<basicHttpBinding>` element then supplies that binding's quotas. No custom binding, no WS-* binding, and no named `bindingConfiguration` exists in this host.

## Logging configuration

Logging is performed through `SAIF.Core.Services.LogService`, constructed with the per-request `IEnvironmentService` (`UC4Service.cs:38`). `UC4Service.Logging` (`UC4Service.cs:259-262`) sets the trace threshold to `INFO` and writes one trace line per operation invocation, naming the method and the job name — see [BR-UC4-008](business-rules.md#br-uc4-008-every-invocation-is-traced-at-info). No structured logging configuration file or logging level override was found in this host's own sources beyond this call site.

## Per-variant environment variance

**None are visible in this repository.** This host ships a single `Web.config` with no `Web.Base.config`, `Web.Debug.config`, `Web.Release.config`, or `Web.ReleaseExternal.config` transform — an enumeration of `Web.*.config` in this project returns exactly one file. The internal/external configuration split that exists for `SAIF.Services.WCF.Host` (which does ship `Web.Base.config` and `Web.ReleaseExternal.config`) does not apply to this host and must not be generalized onto it. See [Operational runbook](operational-runbook.md#deployment) for the two-artifact build the pipeline nonetheless performs.

`environmentsettings/settings.yml`, where present in this repository, is pipeline-seeded deployment data used to populate Environment API values per deployment track; no code path in this host reads it, and it is cited here only as evidence for environment variance — no secret, credential, host, or address value is reproduced from it.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Activation and hosting](activation-hosting.md)
- [Operations](operations.md)
- [Faults and error pipeline](faults.md)
- [Authentication and authorization](authentication-authorization.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Operational runbook](operational-runbook.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts.

## Sources
- `src/WCF/SAIF.Services.WCF.UC4.Host/UC4Service.cs`
- `src/WCF/SAIF.Services.WCF.UC4.Host/Uc4Client.cs`
- `src/WCF/SAIF.Services.WCF.UC4.Host/EnvironmentConstants.cs`
- `src/WCF/SAIF.Services.WCF.UC4.Host/Web.config`
- `pipelines/build-vars.UC4.yml`
